package com.lw.main;

import java.util.ArrayList;
import java.util.List;

/**
 * 为了避免反复创建和销毁障碍物，使用对象池提前创建好一些障碍物
 * 使用时从池中获取，使用完毕后归还
 */
public class BarrierPool {

    //管理对象的容器
    private static List<Barrier> pool = new ArrayList<>();

    //池中初始化个数
    public static final int initCount = 16;

    //池中最大个数
    public static final int maxCount = 20;

    static {
        //初始化pool中对象
        for (int i = 0; i < initCount; i++) {
            pool.add(new Barrier());
        }
    }

    /**
     * 从池中获取对象
     */
    public static Barrier getPool() {
        int size = pool.size();
        if (size != 0) {
//            System.out.println("getPool");
            return pool.remove(size - 1);//移除并返回对象
        } else {
            return new Barrier();
        }
    }


    /**
     * 将对象归还到容器中
     */
    public static void setPool(Barrier barrier){
        if(pool.size()<maxCount){
//            System.out.println("setPool");
            pool.add(barrier);
        }
    }

}
